基于似然的生成模型
基于似然的生成模型包括:VAE、自回归模型、流模型等,不包括GAN。
到底什么是生成模型?以图片为例子,如果我们知道所有真实图片的分布$p(x)$,那我们从这个分布中采样一个样本,就可以得到真实的图片,这就是“生成”。
因此,生成模型的目标就是学习到这个分布$p(x)$,这个也称为“证据”。因此目标函数也就是:
$$
max \sum_{x\in D} \log p(x)
$$
其中$D$代表训练数据集。
变分自编码器
基于ELBO(证据下界)的推导
由于证据$p(x)$计算是不可能的,我们将$p(x)$改写成:
$$
p(x) = \int p(x|z) p(z) dz
$$
我们分析一下上式是否可以计算:这里涉及两个分布,一个是(解码器)似然分布$p(x|z)$,一个是先验分布$p(z)$。假如我们要最大化目标:
$$
\sum_{x\in D} \log p(x) = \sum_{x\in D} log \int p(x|z) p(z) dz
$$
需要我们对所有训练集数据$x$,并且对所有的$z$积分,这是不可能的。因此我们要想办法能不能变成可采样的形式,用蒙特卡洛估计去优化。我们接着改写$p(x)$:
$$
log p(x) = log \int p(x|z) p(z) dz = log \int p(x|z) p(z) \frac{q(z|x)}{q(z|x)} dz \\
= \underbrace{log \mathbb{E}_{z\sim q(z|x)} [\frac{p(x|z) p(z)}{q(z|x)}]
\geq \mathbb{E}_{z\sim q(z|x)}[logp(x|z) + logp(z) - logq(z|x)]}_{\text{ Jensen 不等式}} \\
= \mathbb{E}_{z\sim q(z|x)}[logp(x|z)] - \mathbb{E}_{z\sim q(z|x)}[log\frac{q(z|x)}{p(z)}] \\
= \mathbb{E}_{z\sim q(z|x)}[logp(x|z)] - D_{KL}(q(z|x) || p(z)) = ELBO
$$
Jensen 不等式见这里
这里我们用$q(z|x)$去近似真实后验$p(z|x)$(因为真实后验无法被计算)。所以最终的目标就是最大化$ELBO$,即:
$$
max_\theta \sum_{x\in D} \mathbb{E}_{z\sim q(z|x)}[logp(x|z)] - D_{KL}(q(z|x) || p(z)) \\ \approx max_\theta \mathbb{E}_{x\sim p(x)}[\mathbb{E}_{z\sim q(z|x)}[logp(x|z)] - D_{KL}(q(z|x) || p(z))]
$$
变分的由来:变分法是在泛函中,寻找一个函数$q(x)$,使得泛函$L(q(x))$最大或者最小。泛函可以理解为函数的函数。那VAE其实在做的就是找一个最优的近似后验$q(z|x)$,使得$ELBO$最小。
基于联合概率分布的推导
我们将$p(z)$写成:
$$
p(z) = \int p(z, x) dz \\
$$
那么最小化$KL(p(x)||p_\theta(x))$,其实可以通过最小化$KL(p(z,x)||p_\theta(z,x))$来实现。因此优化目标转为:
$$
min \quad KL(p(z, x) || p_\theta(z, x))
$$
我们改写一下:
$$
KL(p(z, x) || p_\theta(z, x)) = \int\int p(z, x) log \frac{p(z, x)}{p_\theta(z, x)} dz dx \\
= \int\int p(x) p(z|x) log \frac{p(z, x)}{p_\theta(z, x)} dz dx \\
= \mathbb{E}_{x\sim p(x)} [\mathbb{E}_{z\sim p(z|x)} [log \frac{p(z, x)}{p_\theta(z, x)}]] \\
= \mathbb{E}_{x\sim p(x)} [\mathbb{E}_{z\sim p(z|x)} [log \frac{p(z|x)}{p(z)} - log p_\theta(x|z) + log p(x)]] \\
= \mathbb{E}_{x\sim p(x)} [KL(p(z|x) || p(z)) ] - \mathbb{E}_{x\sim p(x)} [\mathbb{E}_{z\sim p(z|x)} [log p_\theta(x|z)]] + \underbrace{\mathbb{E}_{x\sim p(x)}[log p(x)]}_{\text{常数}} \\
$$
所以优化目标转为:
$$
min_\theta\quad \mathbb{E}_{x\sim p(x)} [KL(p(z|x) || p(z)) ] - \mathbb{E}_{x\sim p(x)} [\mathbb{E}_{z\sim p(z|x)} [log p_\theta(x|z)]]
$$
我们来分析一下这个目标函数:
第一部分,我们从真实分布$p(x)$中采样样本$x$,计算条件概率$p(z|x)$的分布,与先验分布$p(z)$的分布进行比较,计算 KL 散度。
第二部分,我们从真实分布$p(x)$中采样样本$x$,计算条件概率$p(z|x)$的分布,并且从$p(z|x)$中采样$z$,通过$p_\theta(x|z)$得到似然概率。
根据目标,我们希望最小化后验分布和先验分布的 KL 散度,同时最大化似然概率。
但是优化目标的计算仍然存在问题:$p(z|x)$分布未知,无法直接计算。而VAE为了解决这个问题,假设$p(z|x)$与$p(z)$都是正态分布,并且使用可学习的分布$q(z|x)=p_\Theta(z|x)$近似$p(z|x)$。至此,优化目标可以数值求得。